package cn.learn.jdk8new.stream;

import cn.learn.jdk8new.Employee;
import org.junit.Test;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Stream;

/**
 * Stream 的三个步骤
 * 1、创建Stream
 * 2、中间操作
 * 3、终止操作（终端操作）
 *
 * @author huangyezhan
 * @version 1.0
 * @date 2020年03月24日15:03
 */
public class StreamDemo1 {

    /**
     * 1、创建Stream
     */
    @Test
    public void test1() {
        //1、可以通过Collection 系列集合提供的Stream() 或 parallelStream()
        List<String>   list    = new ArrayList<>();
        Stream<String> stream1 = list.stream();

        //2、通过Arrays 中的静态方法stream()获取数组流
        Employee[]       employees = new Employee[10];
        Stream<Employee> stream2   = Arrays.stream(employees);

        //3、通过stream类中的静态方法 of()
        Stream<String> stream3 = Stream.of("aa", "bb", "cc");

        //创建无限流
        //迭代
        Stream<Integer> stream4 = Stream.iterate(0, (x) -> x + 2); //迭代 +2
        stream4
                .limit(10)  //中间操作
                .forEach(System.out::println);
        //生成
        Stream.generate(() -> Math.random())  //随机小数
                .limit(5)
                .forEach(System.out::println);

    }


}
